<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------

// 应用公共文件
/**
 * 递归重组节点信息为多维数组
 * @param  [type]  $arr [要处理的节点数组]
 * @param  integer $fid  [父级ID]
 * @return [type]        [description]
 */
function getNode($arr,$fid=0,$lev=1)
{
    $nodes = array();
    foreach($arr as $row){
        if($row["fid"] == $fid){
            if($lev < 2){
                $row['expand'] = true;
            }
            $row["level"] = $lev;
            $row["children"]= getNode($arr,$row['id'],$lev+1);
            $nodes[] = $row;
        }
    }
    return $nodes;
}

/**
 * 遍历当前节点下的所有子节点
 * @param unknown $data
 * @param number $pid
 * @param unknown $SonNode
 * @return unknown
 */
function getSonNode($data,$fid=0,$SonNode = array()){
    $SonNode[] = $fid;
    foreach($data as $k=>$v){
        if($v['fid'] == $fid){
            unset($data[$k]);
            $SonNode = getSonNode($data,$v['id'],$SonNode);
        }
    }
    return $SonNode;
}

/***** 获取子孙树 *****/
function getCatTree($arr,$id,$lev=0) {
    $tree = array();
    foreach($arr as $v) {
        if($v['fid'] == $id) {
            $v['lev'] = $lev;
            $tree[] = $v;
            $tree = array_merge($tree,getCatTree($arr,$v['id'],$lev+1));
        }
    }
    return $tree;
}

/*	发送http post请求	*/
function https_post($url,$data){ // 模拟提交数据函数
    $curl = curl_init(); // 启动一个CURL会话
    curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
//    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
    //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
    curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
    //curl_setopt ($curl, CURLOPT_SAFE_UPLOAD, false);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
    curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
    $tmpInfo = curl_exec($curl); // 执行操作
    if (curl_errno($curl)) {
        echo 'Errno'.curl_error($curl);//捕抓异常
    }
    curl_close($curl); // 关闭CURL会话
    return $tmpInfo; // 返回数据
}
/**
 * 发送GET
 * @param $url
 * @return mixed
 */
function https_get($url){
    $curl = curl_init(); // 启动一个CURL会话
    curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
    //curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
    curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
    $tmpInfo = curl_exec($curl); // 执行操作
    if (curl_errno($curl)) {
        echo 'Errno'.curl_error($curl);//捕抓异常
    }
    curl_close($curl); // 关闭CURL会话
    return $tmpInfo; // 返回数据
}

/*
 *function:显示某一个时间相当于当前时间在多少秒前，多少分钟前，多少小时前
 *timeInt:unix time时间戳
 *format:时间显示格式
 */
function time_format($timeInt,$format='Y-m-d H:i:s'){
    if(empty($timeInt)||!is_numeric($timeInt)||!$timeInt){
        return '';
    }
    $d=time()-$timeInt;
    if($d<10){
        return '刚刚';
    }else{
        if($d<60){
            return $d.'秒前';
        }else{
            if($d<3600){
                return floor($d/60).'分钟前';
            }else{
                if($d<86400){
                    return floor($d/3600).'小时前';
                }else{
                    if($d<259200){//3天内
                        return floor($d/86400).'天前';
                    }else{
                        return date($format,$timeInt);
                    }
                }
            }
        }
    }
}


/**
 * 检测是否为手机号码
 * @author lonnie
 */
function is_mobile($mobile){
    if(preg_match("/^1[3|4|5|6|7|8|9][0-9]\d{8}$/",$mobile)){
        return true;
    }else{
        return false;
    }
}

/**
 * 简单对称加密算法之加密
 * @param String $string 需要加密的字串
 * @param String $skey 加密EKY
 * @return String
 */
function encode($string = '', $skey = 'dt') {
    $strArr = str_split(base64_encode($string));
    $strCount = count($strArr);
    foreach (str_split($skey) as $key => $value)
        $key < $strCount && $strArr[$key].=$value;
    return str_replace(array('=', '+', '/'), array('O0O0O', 'o000o', 'oo00o'), join('', $strArr));
}
/**
 * 简单对称加密算法之解密
 * @param String $string 需要解密的字串
 * @param String $skey 解密KEY
 * @return String
 */
function decode($string = '', $skey = 'dt') {
    $strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2);
    $strCount = count($strArr);
    foreach (str_split($skey) as $key => $value)
        $key <= $strCount  && isset($strArr[$key]) && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0];
    return base64_decode(join('', $strArr));
}